package com.xuan.judge.callback;

import com.github.dockerjava.api.async.ResultCallback;
import com.github.dockerjava.api.model.Statistics;
import lombok.Getter;
import lombok.Setter;

import java.io.Closeable;
import java.io.IOException;


@Getter
@Setter
public class StatisticsCallback implements ResultCallback<Statistics> {

    private Long maxUseMemory;


    // 这个方法在开始接收信息时会被调用
    @Override
    public void onStart(Closeable closeable) {

    }

    // 这个方法在每次接收到新的统计信息时候会被调用
    @Override
    public void onNext(Statistics object) {
        // 从 Statistics 对象中提取当前的最大内存使用量
        Long useMemory = object.getMemoryStats().getMaxUsage();
        // 获取代码运行过程中最大的使用内存
        if (useMemory != null && useMemory > maxUseMemory) {
            maxUseMemory = useMemory;
        }
    }

    // 这个方法在获取统计信息过程中遇到错误时会被调用
    @Override
    public void onError(Throwable throwable) {

    }

    // 这个方法在所有统计信息被接收完毕后调用
    @Override
    public void onComplete() {

    }

    // 这个方法用于清理资源
    @Override
    public void close() throws IOException {

    }
}
